package com.yx.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;

/**
 * @Classname DateUtils
 * @Date 2021/05/18 19:07
 * @Created by yx
 * @Description TODO:日期格式化类
 */
public class DateUtils {
    private static SimpleDateFormat[] simpleDateFormat = new SimpleDateFormat[5];

    static {
        simpleDateFormat[0] = new SimpleDateFormat("yyyy-MM-dd");
        simpleDateFormat[1] = new SimpleDateFormat("yyyy/MM/dd");
        simpleDateFormat[2] = new SimpleDateFormat("yyyy年MM月dd日");
        simpleDateFormat[3] = new SimpleDateFormat("MM-dd-yyyy");
        simpleDateFormat[4] = new SimpleDateFormat("MM/dd/yyyy");
    }

    /**
     * @Author:yx
     * @return java.util.Date
     * @Date 2021/05/18 19:13
     * @param date
     * @Description:字符串类型日期转java.util.Date
     **/
    public static java.util.Date stringToDate(String date){
        for (int i = 0; i < simpleDateFormat.length; i++) {
            try {
                return simpleDateFormat[i].parse(date);
            } catch (ParseException e) {
                //日期转换一定会发生异常.故发生异常不操作,直接进行下一次转换
            }
        }
        //所有的日期格式都匹配不上,返回null
        return null;
    }

    /**
     * @Author:yx
     * @return java.sql.Date
     * @Date 2021/05/18 19:15
     * @param date
     * @Description:java.sql.Date转java.sql.Date
     **/
    public static java.sql.Date dateToSql(java.util.Date date){
        return new java.sql.Date(date.getTime());
    }

    /**
     * @Author:yx
     * @return java.lang.String
     * @Date 2021/05/18 19:18
     * @param date
     * @Description:日期转字符串
     **/
    public static String dateToString(java.util.Date date){
        //数据库日期为yyyy-MM-dd,推荐采用此格式
        return simpleDateFormat[0].format(date);
    }

    public static java.sql.Date stringToSql(String date){
        for (int i = 0; i < simpleDateFormat.length; i++) {
            try {
                java.util.Date d = simpleDateFormat[i].parse(date);
                return DateUtils.dateToSql(d);
            } catch (ParseException e) {
                //日期转换一定会发生异常.故发生异常不操作,直接进行下一次转换
            }
        }
        //所有的日期格式都匹配不上,返回null
        return null;
    }

}
